基于ARM的Cortex—M3架構
1 硬件架構
以STM32F103為主控芯片,主要包含了5個外圍電路模塊:實時時鐘、模數處理、數據存儲、數據傳輸和界面顯示。模數處理是A/D模塊加預處理電路,數據存儲采用一片2 MB SPI Flash,數據傳輸采用CAN接口和RS232接口,顯示屏是4.3寸。如圖1所示,為設備的硬件架構圖。

系統采用的
是ST公司推出的基于Cortex—M3內核的32位ARM芯片系列。本系統選用的STM32F103ZET6屬于該系列的高容量芯片,片內Flash容量為512 KB,片內SRAM容量為64 KB,主頻為72MHz。具備完整的FSMC總線、26位地址線和16位數據寬度。系統的顯示屏為翰彩4.3寸TFT液晶屏,分辨率為640×480,貼一塊電阻式觸摸屏。顯示屏驅動模塊是SSD1963,采用了16位(5位紅色、6位綠色、5位藍色)64K接口模式,由FSMC數據接口連接控制。觸摸屏芯片為ADS7843,它輸入觸摸屏四路電壓,用SPI通信輸出觸摸點位置信息。圖2是LCD接口電路。

CAN總線協議的高可靠性使其在工業上得到廣泛應用。STM32F103的CAN總線單元支持協議2.0A和2.0B;選用的CAN收發器是TJA1050,在CAN協議控制器和物理總線之間起到接口作用,設計120 Ω的終端匹配電阻以適應不同的CAN總線網絡。CAN模塊的接口電路如圖3所示。

2 軟件設計
2.1 整體架構
嵌入式系統設計的第一步在于清晰地劃分任務,設定優先級,根據任務的執行情況調度系統資源。如圖4所示,μC/OS是系統的總調度,之上有6個主要的任務,它們分別對應硬件架構中的模塊,運行整個程序。

每個任務分配不同的優先級和啟動方式,有周期性啟動、信號量驅動兩種方式。顯示功能由μCGUI驅動,FAT32文件由FatFs管理。任務劃分及資源如表1所列。

劃分任務之后,先實現板級支持包,再對通信協議進行設計,然后繪制整個μCGUI的界面。
2.2 板級支持包
板級支持包是指在單板上實現全部基礎功能,例如時鐘管理、掉電備份、串口、CAN總線通信、A/D采樣以及顯示任務的fsmc接口、驅動優盤的SPI接口等。利用ST公司提供的標準化庫函數,調用庫函數進行初始化,配置模塊參數,在使用時根據需要調用函數或在中斷進行,完成后封裝成一個Lib庫文件使用。
在系統中斷里設置:①CAN中斷,用于快速反映CAN口信息;②USART接收中斷,用于接收串口信息;③RTC中斷,用于實時時鐘中斷;④USB有兩個中斷,用于USB端口的收發設置。板級支持包的函數如圖5所示。
全系統的參數如下:A/D總線模塊采樣率為1 kHz,最高為5 kHz,通道數8個,可以拓展到16通道。串口速率為115 200,數據位為8位,無校驗。CAN用CAN-1口,設置為500 kbps、250 kbps、100kbps、50 kbps的4檔速率,擴展ID形式。
初始化單板需進行時鐘校正,存儲正確的時間。單板掉電之后用電池工作,存入備份寄存器,上電再取時間參數(即秒的數量),換算成對應的日期和時間。顯示模塊采用FSMC并行接口控制,實現在屏幕上畫出單個點、單條直線等基本繪圖功能,就能提供接口給μC總線GUI使用。
2.3 CAN總線通信協議
本設計采用CAN總線協議,用狀態機進行狀態轉換,在具體的指令驅動下實現從握手到傳輸數據的過程。圖6是CAN總線通信的狀態機。

CAN總線通信指令是英文單詞縮寫用ASCII碼表示的結果。在本設計中,有一個主節點和3個從節點。主節點和從節點對應的指令應答方式如圖7所示。初始化時,主節點在發出“TEST”指令后,從節點回復“ALOK”,表示從節點收到指令,工作正常。1號和2號從節點負責測量溫度、濕度和壓力。主節點發送“NEED”指令,從節點1號和2號回復溫度、濕度數值給主節點,格式是對應的“指令+數據”。主節點根據ID與指令,判斷數據正確性,及時顯示在屏幕上。

采樣時,主節點在指令的驅動下,切換不同狀態。主節點發送預備指令,確認從節點準備好之后,再發出采樣開始的“SMPL”命令,從節點收到指令后,啟動采樣,完成后回復“GOGO”指令。從節點在采樣結束后再回復,是為了減少采樣啟動的延時。主節點進入接收數據的狀態,發送傳輸數據指令“DATA”,從節點先用“LENS”指令告訴主節點,本次采樣長度是多少,便于主節點在接收數據的時候統計,是否接收到了數量正確的數據。從節點開始發送數據,最后發送“ENDD”指令,告訴主節點數據傳送結束。主節點的數據標識清空,回到初始狀態。這樣完成了一輪數據采樣、發送過程。
2.4 μC/OS嵌入式操作系統
首先,已經將板級支持包編寫完畢,而嵌入式系統首先是單板運行,其次是將底層軟件用任務的方式重新編寫。在單板運行嵌入式系統就是移植的過程,主要有:
①定義常量的值,聲明數據類型、堆棧參數;
②編寫堆棧初始化參數;
③編寫任務切換的函數,還有在中斷函數中提供時鐘中斷,即給操作系統時鐘使用。
移植完成之后,進行任務的編寫。分配給7個任務不同的優先級、堆棧資源和運行方式。其中,App_TaskStart是全部任務的起始點,優先級最高,由這個任務來建立其他任務,并且啟動統計任務。App_TaskCreate建立了其他所有的任務。AppTaskUSerIF任務實現用戶界面,Task_CAN任務實現CAN報文接收,Task_FatFileWR任務實現FatFs文件讀寫,AppTaskKbd任務實現觸摸驅動,Clock_Update任務實現秒更新。
任務的周期性啟動在建立任務時確定,例如AppTaskUserIF任務始終在運行,采用WM_Exec函數做界面更新。AppTaskKbd是10 ms周期讀取觸摸坐標,實現繪制鼠標箭頭和觸控功能。
信號量是在所有任務建立之前建立。CAN_MBOX是采用OSMboxCreate建立的郵箱信號量,能夠傳送CAN接收中斷的消息以啟動CAN任務,FLAGRECORD是OSFlagCreate建立的多值信號量,能置位4位,啟動文件讀寫任務。ClocK_SEM是OSSemCreate建立的二值信號量,專門用于秒更新中斷的信號量。
CAN_MBOX=OSMboxCreate((void*)0);
//建立CAN接收任務的消息郵箱
FLAGRECORD=OSFlagCreate(0,err);
//建立記錄文件的開關量
Clock_SEM=OSSemCreate(1);
//建立秒更新中斷的信號量
在運行μC/OS之后,還可以在os_cfg.h函數中關閉OS不需要的功能模塊,以達到裁減系統、節約內存空間的目的。
2.5 μC/GUI顯示界面
需要先移植,再設計界面。移植過程可以參考其他文獻。設計界面分成兩步:第一步是寫軟件框架,第二步是設計具體界面。每一個對話框都是用創建函數建立,創建函數會調用事先定義的資源,包括控件的形式、位置、大小、初始化值等,對話框還指定了相應的回調函數,通過回調函數操作對話框的行為,完成初始化、繪制、按鈕響應等。代碼如下:

值得注意的是,建立對話框有兩種函數,即阻塞型和非阻塞型。采用非阻塞型的對話框才能在多對話框的操作中實現同步更新。不然,當前對話框使能就會阻塞顯示其他對話框。
GUI_CreateDialogBox(); //非阻塞型
GUI_ExecDialogBox(); //阻塞型
界面設計的細化繪制工作集中在:①初始化時,控件資源決定了界面的布置和美觀;②在回調函數中,按鈕響應函數決定了對話框完成任務的流程。圖8所示是主節點運行界面的主對話框。
2.6 適配從節點
按照主節點的界面和狀態機,修改程序以適配從節點監控設備運行狀態的任務需求。目前設計了3種從節點:一是采集溫度和濕度;二是采集壓力;三是標準數據采集及傳輸。從節點的程序結構和主節點是一致的,需要修改的地方有:
①CAN總線通信協議采用的是從節點的應答指令和狀態機;
②顯示界面的資源與布置需修改。對不需要的任務做屏蔽,節省資源和空間。
圖9所示為第三個從節點的界面。
3 系統應用
通過總線方式將一個主節點和三個從節點連接。主節點選擇500 kbps的波特率,收到從節點發來的狀態確認良好的消息,主節點的當前狀態顯示塊從黃色變成綠色。從節點1和節點2選擇數據發送間隔,按下傳輸按鈕,將溫度、濕度及壓力數值傳送給主節點顯示。
采樣測試中,在需要采集的時刻單擊主節點按鈕,從節點開始采樣,進度條運行。點擊“Transfer”按鈕后,從節點和主節點的傳輸進度條走動一致,完成傳輸后又恢復
了初值。說明正常完成數據采集、傳輸的過程,發送的數據被完整接收。
接收完數據,主節點通過USB線連接電腦,就顯示為一個U盤,其中txt文件是接收的采樣數據,文件名為記錄的實時日期和時間。
結語
本文設計的基于總線的嵌入式設備狀態監控平臺具有主、從節點的分層次結構??偩€結構可靠性高,使用數量多。從節點多種模式能夠適應豐富的設備健康狀態監控,且每個節點的界面具有交互性。嵌入式系統提供了很好的平臺,便于拓展任務,本監控平臺具有很強的實用價值。
實驗室中關鍵設備的信息需要及時采集、反饋到主控室中,又因為設備類型多,促使設計者開發主節點、從節點的結構,總線通信的監測平臺。同時,平臺的用戶界面需具有二次開發能力。因此,本文設計了一種設備狀態監測平臺。
文章轉載至:電子網

提交
新大陸自動識別精彩亮相2024華南國際工業博覽會
派拓網絡被Forrester評為XDR領域領導者
智能工控,存儲強基 | ??低晭砭手黝}演講
展會|Lubeworks路博流體供料系統精彩亮相AMTS展會
中國聯通首個量子通信產品“量子密信”亮相!